//
// Created by zing on 5/17/2020.
//


/*
 * show-bytes.c
 */

#include <stdio.h>

typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start, size_t len) {
    size_t i;
    for (i = 0; i < len; i++) {
        printf(" %.2x", start[i]);
    }
    printf("\n");
}

void show_int(int x) {
    show_bytes((byte_pointer) &x, sizeof(int));
}

void show_float(float x) {
    show_bytes((byte_pointer) &x, sizeof(float));
}

void show_pointer(void *x) {
    show_bytes((byte_pointer) &x, sizeof(void *));
}

//=============
// 2.57 changes
//=============
void show_short(short x) {
    show_bytes((byte_pointer) &x, sizeof(short));
}

void show_long(long x) {
    show_bytes((byte_pointer) &x, sizeof(long));
}

void show_double(double x) {
    show_bytes((byte_pointer) &x, sizeof(double));
}
//==================
// 2.57 changes end
//==================

void test_show_bytes(int val) {
    int ival = val;
    float fval = (float) ival;
    int *pval = &ival;

    show_int(ival);
    show_float(fval);
    show_pointer(pval);

    //=============
    // 2.57 changes
    //=============
    short sval = (short) ival;
    long lval = (long) ival;
    double dval = (double) ival;

    show_short(sval);
    show_long(lval);
    show_double(dval);
    //==================
    // 2.57 changes end
    //==================
}

int main(int argc, char *argv[]) {
    int test_num = 328;

    test_show_bytes(test_num);
    return 0;
}

//48 01 00 00
//00 00 a4 43
//f8 0b 25 f5 ff 7f 00 00
//48 01
//48 01 00 00 00 00 00 00
//00 00 00 00 00 80 74 40